package Q16_21_Sum_Swap;
import java.util.HashSet;
public class QuestionC {
public static int sum(int[] array) {
int s = 0;
for (int a : array) {
s += a;
}
return s;
}
public static int[] findSwapValues(int[] array1, int[] array2) {
Integer target = getTarget(array1, array2);
if (target == null) return null;
return findDifference(array1, array2, target);
}
public static int[] findDifference(int[] array1, int[] array2, int target) {
HashSet<Integer> contents2 = getContents(array2);
for (int one : array1) {
int two = one - target;
if (contents2.contains(two)) {
int[] values = {one, two};
return values;
}
}
return null;
}
public static Integer getTarget(int[] array1, int[] array2) {
int sum1 = sum(array1);
int sum2 = sum(array2);
if ((sum1 - sum2) % 2 != 0) return null;
return (sum1 - sum2) / 2;
}
public static HashSet<Integer> getContents(int[] array) {
HashSet<Integer> set = new HashSet<Integer>();
for (int a : array) {
set.add(a);
}
return set;
}
public static void main(String[] args) {
int[] array1 = {-9, -1, -4, 8, 9, 6, -5, -7, 3, 9};
int[] array2 = {6, 6, 4, -1, 7, -6, -9, 4, -8, 8};
int[] swaps = findSwapValues(array1, array2);
if (swaps == null) {
System.out.println("null");
} else {
System.out.println(swaps[0] + " " + swaps[1]);
}
}
}